草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 为什么 “cast from ‘X*’ 到 ‘Y’ 失去精度”是一个硬错误,什么是遗留代码的合适修复

1。为什么?像这样的代码曾经有效,它的含义很明显。编译器是否甚至允许(根据规范)让它成为一个错误?我知道它正在失去精度,我很乐意收到警告。但它仍然具有定义明确的语义(至少对于未签名的缩小规模转换已定义)并且用户可能只是想这样做。2。解决方法我有遗留代码,我不想重构太多,因为它相当棘手并且已经调试过了。它正在做两件事:有时将整数存储在指针变量中。如果代码之前在其中存储了一个整数,则该代码只会将指针转换为整数。因此,虽然Actor阵容正在缩小,但现实中永远不会发生溢出。代码已经过测试并且可以工作。当存储整数时,它总是适合普通的旧无符号类型,因此更改类型不是一个好主意并且指针被传递了很多次,

c++ - 取消引用 NULL 指针是否保证使 C/C++ 中的程序崩溃?

我遇到了这个有线代码,它没有崩溃。#includestructs{char*c;char*c2;};intmain(){structs*p=NULL;printf("%d\n",&(p->c));printf("%d\n",&p->c2);printf("%d\n",&(*p).c2);return0;}输出:044我有几个问题无法回答:在c/c++中NULL指针总是等于0吗?如果0恰好是一个变量的地址会怎样?输出似乎是结构成员的偏移地址。这个是怎么算出来的。我的意思是p->c是c的地址,它不存在,因为p==NULL。如果c的地址不存在,怎么能通过&p->c得到c的地址呢?取消引用NU

C 代码中的 C++ 异常处理

当我们用C编写程序时,我们可能会调用一些用C++编写但具有C接口(interface)的库。那么有可能会出现我们调用这些库的时候,会出现C++异常的情况。所以我的问题是我们如何处理这种情况。从C++开发人员的角度来看,我对这个问题更感兴趣。假设我正在开发一个将由C程序调用的C++库,我是否应该停止使用异常并返回错误代码?另一种情况是,如果我已经有一个完全开发的使用异常的C++库,我如何才能以只使用错误返回方法的快速方式转移这个库? 最佳答案 您必须在C++端捕获所有异常并将它们转换为C中适当的错误返回,其中可能包括适当的特定错误代码

c++ - 如何处理: redeclaration of C++ built-in type ‘char16_t’

在C++11项目中,我必须使用外部C库。该库主头文件定义typedefuint16_tchar16_t;因此,包含该库的C++程序编译失败,并显示消息:redeclarationofC++built-intype‘char16_t’我唯一的想法是重新打包整个库,但是因为char16_t在这个库中很普遍,所以会非常耗时(如果可能的话)。有没有一些明智的方法来处理这个问题?编辑:我还有另一个想法,即删除有问题的行并将每次出现的char16_t替换为uint16_t,但我将不得不修改第三方库header,我并不特别喜欢这个想法(可能会有更多类似的错误)。所以我也想知道在包含头文件时是否有一些

c++ - 符合 IEEE-754 标准的四舍五入

C标准库提供了round,lround,和llroundC99中的函数族。但是,这些函数不符合IEEE-754,因为它们没有实现IEEE规定的半对偶的“银行家四舍五入”。如果小数部分恰好为0.5,则半对偶四舍五入要求将结果四舍五入到最接近的偶数。如cppreference.com中所述,C99标准改为要求离零一半。1-3)Computesthenearestintegervaluetoarg(infloating-pointformat),roundinghalfwaycasesawayfromzero,regardlessofthecurrentroundingmode.在C中实现舍

c++ - 如何反汇编 Pro*C/C++ 程序?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion有没有办法反汇编Pro*C/C++可执行文件?

c++ - 如何在 Solaris 上的 BSD 套接字上设置 TCP_NODELAY?

我正在尝试使用以下方法关闭BSD套接字的Nagle算法:setsockopt(newSock,IPPROTO_TCP,TCP_NODELAY,(char*)&flag,sizeofflag);但编译器声称TCP_NODELAY之前从未见过:error:`TCP_NODELAY'undeclared(firstusethisfunction)这是包含文件的完整列表:#include#include#include#include#include#include#includeusingnamespacestd;我还有-lnsl和-lsocket链接器选项,但它无法编译。我错过了什么吗?所

c++ - 使用#include 加载 OpenCL 代码

很久以前我就看到过用hlsl/glsl着色器代码完成的——在源代码文件上使用#include将代码粘贴到char*这样在运行时就不会发生文件IO。如果我将其表示为伪代码,它看起来有点像这样:#defineCLSourceToString(filename)"#include"filename""constchar*kernel=CLSourceToString("kernel.cl");当然#define不会起作用,因为它只会尝试使用这些引号来开始字符串。 最佳答案 查看子弹物理引擎对OpenCL的使用how对kernel执行此操作

c++ - 避免 std::bad_alloc。 new 应该返回一个 NULL 指针

我将一个中型应用程序从C移植到C++。它不会在任何地方处理异常,这一点不应该改变。我(错误!)对C++的理解是(直到我昨天艰难地学习它)(默认)new运算符在出现分配问题时返回NULL指针。然而,直到1993年(左右)才出现这种情况。现在,它抛出一个std::bad_alloc异常。是否可以在不重写所有内容以在每次调用时使用std::nothrow的情况下返回到旧行为? 最佳答案 你可以重载operatornew:#includevoid*operatornew(size_tpAmount)//throw(std::bad_allo

c++ - 多边形轮廓上的边并不总是正确的

我正在使用下面的算法生成四边形,然后将其渲染成这样的轮廓http://img810.imageshack.us/img810/8530/uhohz.png图像上看到的问题是有时线条太细,而它们应该始终保持相同的宽度。我的算法找到第一个顶点的4顶点,然后下一个顶点的顶部2顶点是前一个顶点的底部2。这会创建连接线,但似乎并不总是有效。我该如何解决这个问题?这是我的算法:voidOGLENGINEFUNCTIONS::GenerateLinePoly(conststd::vector>&input,std::vector&output,intwidth){output.clear();if(